This application relates to systems in which functional units that rely on different clock signals communicate with each other, and in particular, in systems in which a relationship between those clock signals must be maintained.
Many systems have functional units that are driven by different clocks. These functional units are said to be in different clock domains.
In many cases, it is useful to maintain a fixed relationship between the clocks in the different clock domains. In particular, it is useful for these clock signals to be temporally offset from each other. This temporal offset results in a phase difference between clock signals. For example, if there are four functional units in four clock domains, the phases of the four clock signals are 0, 90, 180, and 270 degrees. Thus, each clock signal is at least 90 degrees in phase away from any other clock signal.
Such temporal offsetting of clock signals is useful because it tends to equalize the load on the power supply. In addition, the offsets result in lower simultaneous switching noise.
A difficulty that arises is that of maintaining these phase differences over time. In general, environmental factors, such as heat or voltage fluctuation can cause these phase differences to change somewhat unpredictably. This can lead to errors in those portions of the data processing system that receive multiple clock signals, such as the memory controller.